package classificacao;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

import util.CSVMomentoHU;
import caracteristicas.ImageClass;


public class Knn {

	
	public static ImageClass[] calcularVizinhos(double[] momentos, int k){
		
		ImageClass[] vizinhos = new ImageClass[k];
		ArrayList<Double> distancias = new ArrayList<Double>();
		
		HashMap<Double, ImageClass> mapeamento = new HashMap<Double, ImageClass>();
		
		CSVMomentoHU csvMom = new CSVMomentoHU();
		
		for(int i=0; i<42; i++){
			ArrayList<ImageClass> imgs = csvMom.retornarMomentosHu(i+1);
			
			for(ImageClass img : imgs){
				double distancia = img.distanciaEuclidiana(momentos);
				distancias.add(distancia);
				mapeamento.put(distancia, img);
			}
		}
		
		Double[] vetorDistancias = new Double[distancias.size()];
		distancias.toArray(vetorDistancias);
		
		Arrays.sort(vetorDistancias);
		
		for(int i=0; i<k; i++){
			vizinhos[i] = mapeamento.get(vetorDistancias[i]);
		}
		
		return vizinhos;
	}
	
}
